package cn.song.freight.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * 区域实体类
 *
 * @author SongRenShuo
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("area")
@ApiModel(description = "区域数据对象")
public class AreaDO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键ID")
    private Long id;

    /**
     * 省份编码（如：110000）
     */
    @TableField("province_code")
    @ApiModelProperty(value = "省份编码（如：110000）")
    private String provinceCode;

    /**
     * 城市编码（如：110100），仅 level>=2 时非空
     */
    @TableField("city_code")
    @ApiModelProperty(value = "城市编码（如：110100），仅 level>=2 时非空")
    private String cityCode;

    /**
     * 县区编码（如：110101），仅 level=3 时非空
     */
    @TableField("district_code")
    @ApiModelProperty(value = "县区编码（如：110101），仅 level=3 时非空")
    private String districtCode;

    /**
     * 省份全称（如：北京市、广东省、新疆维吾尔自治区）
     */
    @TableField("province_name")
    @ApiModelProperty(value = "省份全称（如：北京市、广东省、新疆维吾尔自治区）")
    private String provinceName;

    /**
     * 城市全称（如：北京市、广州市），level>=2 时非空
     */
    @TableField("city_name")
    @ApiModelProperty(value = "城市全称（如：北京市、广州市），level>=2 时非空")
    private String cityName;

    /**
     * 区县全称（如：朝阳区、天河区），level=3 时非空
     */
    @TableField("district_name")
    @ApiModelProperty(value = "区县全称（如：朝阳区、天河区），level=3 时非空")
    private String districtName;

    /**
     * 省份简称（如：北京、广东、新疆）
     */
    @TableField("province_short_name")
    @ApiModelProperty(value = "省份简称（如：北京、广东、新疆）")
    private String provinceShortName;

    /**
     * 城市简称（如：北京、广州、深圳）
     */
    @TableField("city_short_name")
    @ApiModelProperty(value = "城市简称（如：北京、广州、深圳）")
    private String cityShortName;

    /**
     * 区县简称（如：朝阳、天河、南山）
     */
    @TableField("district_short_name")
    @ApiModelProperty(value = "区县简称（如：朝阳、天河、南山）")
    private String districtShortName;

    /**
     * 地址层级：1-省份，2-城市，3-区县
     */
    @TableField("level")
    @ApiModelProperty(value = "地址层级：1-省份，2-城市，3-区县")
    private Integer level;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 最后更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty(value = "最后更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 操作人
     */
    @TableField("operator")
    @ApiModelProperty(value = "操作人")
    private String operator;
}
